#include "../inc/main.h"
#include "../inc/displayText.h"

volatile bool running = true; // 线程运行标志
// 循环显示时间
void *showTime(void *arg)
{
    while (running)
    {
        time_t ret = time(NULL);
        struct tm *localresult = localtime(&ret);
        char buf_t[128] = {0};

        // 安全地格式化字符串
        snprintf(buf_t, sizeof(buf_t), "%d-%02d-%02d %02d:%02d:%02d",
                 localresult->tm_year + 1900,
                 localresult->tm_mon + 1,
                 localresult->tm_mday,
                 localresult->tm_hour,
                 localresult->tm_min,
                 localresult->tm_sec);
        
        
        displayText(buf_t, 20, 200, 27, 544, 32, 0, 5, 255, 0, 0, 200);
        
        // 每秒更新一次
        usleep(1000000); // 1 秒
    }
    return NULL; // 线程结束
}


// void *showTime(void *arg)
// {
//     time_t ret;
//     while (running)
//     {
//         ret = time(NULL);
//         // 本地时间结构体
//         struct tm *localresult = localtime(&ret);
//         char buf_t[128] = {0};
//         sprintf(buf_t, "%d-%02d-%02d %02d:%02d:%02d", localresult->tm_year + 1900, localresult->tm_mon + 1, localresult->tm_mday, localresult->tm_hour, localresult->tm_min, localresult->tm_sec);
//         displayText(buf_t, 20, 200, 27, 544, 32, 0, 5, 255, 0, 0, 200);
//         usleep(1000);
//     }
//     return NULL; // 线程结束
// }

// 停止线程
void stop_thread(pthread_t TID)
{
    running = false; // 设置标志位
    if (pthread_join(TID, NULL) != 0) // 等待线程结束并处理错误
    {
        perror("pthread_join failed");
    }
}

// void stop_thread(pthread_t TID)
// {
//     running = false;         // 设置标志位
//     pthread_join(TID, NULL); // 等待线程结束
// }